home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / frmset2 / unit1.pas < prev   
Pascal/Delphi Source File  |  1996-04-08  |  3KB  |  90 lines

  1. {
  2.    Example code using the FormSet control. This is the "parent" or "book"
  3.    form. It has the FormSet control on it. The FormSet displays "child" or
  4.    "page" forms in the client area of the parent.
  5.  
  6.    One critical procedure in this unit is the OnTabLoad event handler.
  7.    This procedure maps TForm objects onto the tabs. It is called any time a
  8.    tab is selected and FormSet does not already have the TForm object for
  9.    that tab.
  10.  
  11.    Another important point is to set FormSet1.TabIndex to a valid tab index
  12.    before the main form is seen by the user.  This triggers a Change event
  13.    within FormSet which is needed to display the first tab and form.
  14. }
  15. Unit Unit1;
  16.  
  17. interface
  18.  
  19. uses
  20.   SysUtils, Classes, Forms, Dialogs,  Tabs, Controls, Formset, ExtCtrls;
  21.  
  22. type
  23.   TForm1 = class(TForm)
  24.     FormSet1: TFormSet;
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure FormSet1Change(Sender: TObject; NewTab: Integer;
  27.       var AllowChange: Boolean);
  28.     procedure FormSet1Click(Sender: TObject);
  29.     procedure FormSet1TabLoad(Sender: TObject; TabIndex: Integer;
  30.       FormTab: TFormTab);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations  }
  35.   end;
  36.  
  37. var
  38.   Form1: TForm1;
  39.  
  40. implementation
  41. {$R *.DFM}
  42. uses Page1, Page2, Page3;
  43.  
  44. procedure TForm1.FormCreate(Sender: TObject);
  45. begin
  46.    FormSet1.TabIndex := 0;  { Necessary to trigger first Change }
  47. end;
  48.  
  49. procedure TForm1.FormSet1Change(Sender: TObject; NewTab: Integer;
  50.    var AllowChange: Boolean);
  51. begin
  52.    showmessage(format('FormSet: Change (TabIndex=%d, NewTab=%d)',
  53.       [FormSet1.Tabindex,NewTab]));
  54. end;
  55.  
  56. procedure TForm1.FormSet1Click(Sender: TObject);
  57. begin
  58.    showmessage('FormSet: Click.');
  59. end;
  60.  
  61. procedure TForm1.FormSet1TabLoad(Sender: TObject; TabIndex: Integer;
  62.   FormTab: TFormTab);
  63. var
  64.    Caption : String;
  65. begin
  66.    Caption := FormSet1.Tabs[TabIndex];
  67.    if Caption = 'Page &1' then
  68.    begin
  69.       FormTab.Form    := TfPage1.Create(Self);
  70.       FormTab.OnOpen  := ftoSizeBookToPage;
  71.       FormTab.OnClose := ftcAlwaysRelease;
  72.    end
  73.    else
  74.    if Caption = 'Page &2' then
  75.    begin
  76.       FormTab.Form    := TfPage2.Create(Self);
  77.       FormTab.OnOpen  := ftoSizePageToBook;
  78.       FormTab.OnClose := ftcNeverRelease;
  79.    end
  80.    else
  81.    if Caption = 'Page &3' then
  82.    begin
  83.       FormTab.Form    := fPage3;   { already exists! }
  84.       FormTab.OnOpen  := ftoSizePageToBook;
  85.       FormTab.OnClose := ftcNeverRelease;
  86.    end;;
  87. end;
  88.  
  89. end.
  90.